<!DOCTYPE html>
<html lang="en">
<head>
  
    <title>C&#43;&#43;初体验 :: lichaikui</title>
  
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="c&#43;&#43;初体验 一、程序单元 1.组成 1）.预处理指令 在程序进行编译时，先对所有预处理的命令进行处理，将头文件的具体内容代 #include指令，然后再进行对该程序单元进行编译
  #include—预处理命令 ：
在编译器编译之前，做一些预先要做的准备工作，比如宏替换、展开等等，而包含头文件其实也就是把头文件里的内容原封不动的放到程序的最前面
  iostream 的作用：
向程序 提供输入或输出时所需的一些信息 isotream是 i-o-stream三个词的组合，“代表 输入输出流” ， 的意思，由于这类文件都放在程序单元的开头，所以称为 “头文件（header file）”
  初学 C &#43;＋时，对本程序中的第1,2行可以不必深究，只须知道：
 如果程序有输人或输出时，必须使用“# include &amp;lt; iostream &amp;gt;＂指令以提供必要的信息 同时要用“ using namespace std ;”使程序能够使用这些信息，否则栓序辅译时将出错  2）.函数声明 //对max 函数做出声明 这样编译到第9行时就会知道max时已声明的函数，系统就会根据函数声明时给定的信息对函数调用的合法性进行检查，如果二者不匹配（例如参数的个数或参数的类型与声明时所指定的不符），编译就会出错
#include&amp;lt;iostream&amp;gt;using namespace std; class Student { private: int num; int score; public: void setdata() { cin&amp;gt;&amp;gt;num; cin &amp;gt;&amp;gt;score; } void display() { cout&amp;lt;&amp;lt;&amp;#34;num =&amp;#34;&amp;lt;&amp;lt;num&amp;lt;&amp;lt;endl; cout&amp;lt;&amp;lt;&amp;#34;score =&amp;#34;&amp;lt;&amp;lt;score&amp;lt;&amp;lt;endl; } }; Student stud1,stud2; int main() { stud1." />
<meta name="keywords" content="li" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://lichaikui.gitee.io/simu/posts/c&#43;&#43;%E5%88%9D%E4%BD%93%E9%AA%8C/" />




<link rel="stylesheet" href="https://lichaikui.gitee.io/simu/assets/style.css">






<link rel="apple-touch-icon" href="https://lichaikui.gitee.io/simu/img/apple-touch-icon-192x192.png">

  <link rel="shortcut icon" href="https://lichaikui.gitee.io/simu/img/favicon/orange.png">



<meta name="twitter:card" content="summary" />



<meta property="og:locale" content="en" />
<meta property="og:type" content="article" />
<meta property="og:title" content="C&#43;&#43;初体验">
<meta property="og:description" content="c&#43;&#43;初体验 一、程序单元 1.组成 1）.预处理指令 在程序进行编译时，先对所有预处理的命令进行处理，将头文件的具体内容代 #include指令，然后再进行对该程序单元进行编译
  #include—预处理命令 ：
在编译器编译之前，做一些预先要做的准备工作，比如宏替换、展开等等，而包含头文件其实也就是把头文件里的内容原封不动的放到程序的最前面
  iostream 的作用：
向程序 提供输入或输出时所需的一些信息 isotream是 i-o-stream三个词的组合，“代表 输入输出流” ， 的意思，由于这类文件都放在程序单元的开头，所以称为 “头文件（header file）”
  初学 C &#43;＋时，对本程序中的第1,2行可以不必深究，只须知道：
 如果程序有输人或输出时，必须使用“# include &amp;lt; iostream &amp;gt;＂指令以提供必要的信息 同时要用“ using namespace std ;”使程序能够使用这些信息，否则栓序辅译时将出错  2）.函数声明 //对max 函数做出声明 这样编译到第9行时就会知道max时已声明的函数，系统就会根据函数声明时给定的信息对函数调用的合法性进行检查，如果二者不匹配（例如参数的个数或参数的类型与声明时所指定的不符），编译就会出错
#include&amp;lt;iostream&amp;gt;using namespace std; class Student { private: int num; int score; public: void setdata() { cin&amp;gt;&amp;gt;num; cin &amp;gt;&amp;gt;score; } void display() { cout&amp;lt;&amp;lt;&amp;#34;num =&amp;#34;&amp;lt;&amp;lt;num&amp;lt;&amp;lt;endl; cout&amp;lt;&amp;lt;&amp;#34;score =&amp;#34;&amp;lt;&amp;lt;score&amp;lt;&amp;lt;endl; } }; Student stud1,stud2; int main() { stud1." />
<meta property="og:url" content="https://lichaikui.gitee.io/simu/posts/c&#43;&#43;%E5%88%9D%E4%BD%93%E9%AA%8C/" />
<meta property="og:site_name" content="lichaikui" />

  
    <meta property="og:image" content="https://lichaikui.gitee.io/simu/img/favicon/orange.png">
  

<meta property="og:image:width" content="2048">
<meta property="og:image:height" content="1024">













</head>
<body class="orange">


<div class="container headings--one-size">

  <header class="header">
  <div class="header__inner">
    <div class="header__logo">
      <a href="https://lichaikui.gitee.io/simu/">
  <div class="logo">
    lichaikui
  </div>
</a>

    </div>
    
      <div class="menu-trigger">menu</div>
    
  </div>
  
    <nav class="menu">
  <ul class="menu__inner menu__inner--desktop">
    
      
        
          <li><a href="https://lichaikui.gitee.io/simu/posts/about">About</a></li>
        
      
        
          <li><a href="https://lichaikui.gitee.io/simu/posts/showcase">Showcase</a></li>
        
      
      
    

    
  </ul>

  <ul class="menu__inner menu__inner--mobile">
    
      
        <li><a href="https://lichaikui.gitee.io/simu/posts/about">About</a></li>
      
    
      
        <li><a href="https://lichaikui.gitee.io/simu/posts/showcase">Showcase</a></li>
      
    
    
  </ul>
</nav>

  
</header>


  <div class="content">
    
<div class="post">
  <h1 class="post-title">
    <a href="https://lichaikui.gitee.io/simu/posts/c&#43;&#43;%E5%88%9D%E4%BD%93%E9%AA%8C/">C++初体验</a></h1>
  <div class="post-meta">
    
    
    
  </div>

  
  


  

  <div class="post-content"><div>
        <h1 id="c初体验">c++初体验<a href="#c初体验" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1>
<h2 id="一程序单元">一、程序单元<a href="#一程序单元" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h2>
<h3 id="1组成">1.组成<a href="#1组成" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<h5 id="1预处理指令">1）.预处理指令<a href="#1预处理指令" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h5>
<p>在程序进行编译时，先对所有预处理的命令进行处理，将头文件的具体内容代 #<code>include</code>指令，然后再进行对该程序单元进行编译</p>
<ul>
<li>
<p><code>#include</code>—预处理命令  ：</p>
<p>在编译器编译之前，做一些预先要做的准备工作，比如宏替换、展开等等，而包含头文件其实也就是把头文件里的内容原封不动的放到程序的最前面</p>
</li>
<li>
<p><code>iostream</code> 的作用：</p>
<p>向程序 提供输入或输出时所需的一些信息 isotream是 <code>i-o-stream</code>三个词的组合，“代表 输入输出流” ， 的意思，由于这类文件都放在程序单元的开头，所以称为  “头文件（header file）”</p>
</li>
</ul>
<p><strong>初学 C +＋时，对本程序中的第1,2行可以不必深究，只须知道：</strong></p>
<ul>
<li>如果程序有输人或输出时，必须使用“# include &lt; iostream &gt;＂指令以提供必要的信息</li>
<li>同时要用“ using namespace std ;”使程序能够使用这些信息，否则栓序辅译时将出错</li>
</ul>
<h5 id="2函数声明">2）.函数声明<a href="#2函数声明" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h5>
<p><code>//对max 函数做出声明</code> 这样编译到第9行时就会知道max时已声明的函数，系统就会根据函数声明时给定的信息对函数调用的合法性进行检查，如果二者不匹配（例如参数的个数或参数的类型与声明时所指定的不符），编译就会出错</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-c++" data-lang="c++"><span style="color:#75715e">#include</span><span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e">
</span><span style="color:#75715e"></span><span style="color:#66d9ef">using</span> <span style="color:#66d9ef">namespace</span> std;
<span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Student</span>
{   <span style="color:#66d9ef">private</span><span style="color:#f92672">:</span>
        <span style="color:#66d9ef">int</span> num;
        <span style="color:#66d9ef">int</span> score;
    <span style="color:#66d9ef">public</span><span style="color:#f92672">:</span>
        <span style="color:#66d9ef">void</span> setdata()
        {   cin<span style="color:#f92672">&gt;&gt;</span>num;
            cin <span style="color:#f92672">&gt;&gt;</span>score;
        }
        <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">display</span>()
        {   cout<span style="color:#f92672">&lt;&lt;</span><span style="color:#e6db74">&#34;num =&#34;</span><span style="color:#f92672">&lt;&lt;</span>num<span style="color:#f92672">&lt;&lt;</span>endl;
            cout<span style="color:#f92672">&lt;&lt;</span><span style="color:#e6db74">&#34;score =&#34;</span><span style="color:#f92672">&lt;&lt;</span>score<span style="color:#f92672">&lt;&lt;</span>endl;
    }
};
Student stud1,stud2;
<span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>()
{   stud1.setdata();
    stud2.setdata();
    stud1.display();
    stud2.display();
    <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
}
</code></pre></div><h5 id="3函数">3）.函数<a href="#3函数" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h5>
<ul>
<li>
<p>概括</p>
<p>函数是实现操作的部分,因此函数是程序中必须有的和最基本的组成部分。每一个程序必须包括一个或多个函数,其中必须有一个(而且只能有一个)主函数(main 函数)。</p>
<p>但是并不要求每一个程序文件都必须全部具有以上3个部分,可以缺少某些部分(包括函数)。也就是说,有的程序文件可以不包括函数,而只包括预处理命令和(或)声明部分          完全<strong>根据需要而定</strong></p>
</li>
<li>
<p>组成</p>
<p>①函数首部,即函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>int</td>
<td>max</td>
<td>(int</td>
<td>x</td>
<td>,</td>
<td>int</td>
<td>y)</td>
</tr>
<tr>
<td>函数类型</td>
<td>函数名</td>
<td>函数参数类型</td>
<td>函数参数名</td>
<td></td>
<td>函数参数类型</td>
<td>函数参数名</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>一个函数名后面必须跟一对圆括号，函数参数可以缺省,如int main()</p>
<p>② 函数体,即函数首部下面的大括号内的部分。如果在一个函数中有多个大括号则最外层的一对  {}  为函数体的范围。 
函数体一般包括:</p>
<ol>
<li>
<p><strong>局部声明部分</strong>(在函数内的声明部分)   包括对本函数中所用到的类型、函数的声明和变量的定义 
如main 函数中的“int a,b,m;”以及对所调用的函数声明“int max(int x,int y);”</p>
<p>对数据的声明既可以放在函数之外(其作用范围是全局的),也可以放在函数内(其作用范围是局部的,只在本函数内有效)</p>
</li>
<li>
<p><strong>执行部分</strong>  由若干个执行语句组成,用来进行有关的操作,以实现函数的功能。</p>
<p>​					某些情况下也可以 没有声明部分 ，甚至 既无声明部分，也无执行部分</p>
<p><code>vido dump( ){ }     // 是一个空函数，什么也不做，也可以</code></p>
</li>
</ol>
</li>
</ul>
<h3 id="2头文件">2.头文件<a href="#2头文件" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<p>以下几个程序是按照ANSI++规定的语法编写的。由于C++是从C语言发展而来的,为了与C兼容,C++保留了C语言中的一些规定。其中之一是头文件的形在C语言中头文件用**.h**作为后缀,如    stdio.h.math.h   ,   string.h   等。在C++发展初期，为了和C语言兼容,许多C++编译系统保留头文件以h为后缀的用法,如iostream.h。但后来ANSIC++建议头文件不带后缀.h。近年推出的C++编译系统新版本采用了 C++的新方法,提供了一批不带后缀的头文件,如用   iostream    ,   string,cmath   等作为头文件。但为了使原来编写的C++程序能够运行,仍允许使用原有的带后缀.h的头文件,即二者同时并存,由用户选用。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-c++" data-lang="c++"><span style="color:#75715e">#include</span><span style="color:#75715e">&lt;iostream.h&gt;</span><span style="color:#75715e">
</span><span style="color:#75715e"></span><span style="color:#66d9ef">using</span> <span style="color:#66d9ef">namespace</span> std;
<span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>()
{
    cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;This is a C++ program.&#34;</span>;
    <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
}
</code></pre></div><p>由于C语言无“命名空间”,<strong>因此用带后缀.h的头文件时不必用“using namespace std;&ldquo;作声明</strong>。</p>
<h3 id="3命名空间">3.命名空间<a href="#3命名空间" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<p>“<code>using namespace std ;</code>”的意思是“<strong>使用命名空间 std</strong> ” C +＋标准库中的类和函数是在命名空间 std 中声明的，因此程序中如果需要用到 C +＋标准库（此时需要用 include 指令），就需要用“ using namespace std ;”作声明，表示要用到命名空间 std 中的内容。</p>
<h3 id="4要点">4.要点<a href="#4要点" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-c++" data-lang="c++"><span style="color:#75715e">#include</span><span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e">
</span><span style="color:#75715e"></span>
<span style="color:#66d9ef">using</span> <span style="color:#66d9ef">namespace</span> std;

<span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>()

{

  cout<span style="color:#f92672">&lt;&lt;</span><span style="color:#e6db74">&#34;This is a C++ program.&#34;</span>;

  <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;

}
</code></pre></div><ul>
<li>每一个C++程序都要有 一个 main 函数</li>
<li>函数前面的int的作用是声名 函数的类型为整形（标准C++规定main函数必须声明为int型，即此主函数返回一个整形的函数值）</li>
<li>程序第六行的<code>return 0;</code>的作用是想操作系统返回一个零值，如果程序不能正常执行 ，则会自动向操作系统返回一个非零值，一般为-1</li>
<li>c++所有语句最后都应当有一个  <code>;</code></li>
<li>#include<!-- raw HTML omitted --> 是一个“包含指令''，它的作用是将文件“iostraeam”的内容包含到该指令所在的程序文件中，代替该指令</li>
</ul>
<h1 id="二知识点">二、知识点<a href="#二知识点" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-c++" data-lang="c++"><span style="color:#75715e">#include</span><span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e">
</span><span style="color:#75715e"></span><span style="color:#66d9ef">using</span> <span style="color:#66d9ef">namespace</span> std;

<span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>()
{
    <span style="color:#66d9ef">int</span> max(<span style="color:#66d9ef">int</span> x,<span style="color:#66d9ef">int</span> y);    <span style="color:#75715e">//对max 函数做出声明 
</span><span style="color:#75715e"></span>    <span style="color:#66d9ef">int</span> a,b,m;
    cin<span style="color:#f92672">&gt;&gt;</span>a<span style="color:#f92672">&gt;&gt;</span>b;
    m <span style="color:#f92672">=</span> max(a,b);
    cout<span style="color:#f92672">&lt;&lt;</span><span style="color:#e6db74">&#34;max=&#34;</span><span style="color:#f92672">&lt;&lt;</span>m<span style="color:#f92672">&lt;&lt;</span><span style="color:#e6db74">&#39;\n&#39;</span>;
    <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
}

<span style="color:#66d9ef">int</span> <span style="color:#a6e22e">max</span>(<span style="color:#66d9ef">int</span> x,<span style="color:#66d9ef">int</span> y)
{
    <span style="color:#66d9ef">int</span> z;
    <span style="color:#66d9ef">if</span>(x<span style="color:#f92672">&gt;</span>y)z<span style="color:#f92672">=</span>x;
        <span style="color:#66d9ef">else</span> z<span style="color:#f92672">=</span>y;
    <span style="color:#66d9ef">return</span>(z);
}
</code></pre></div><h5 id="1类">1.类<a href="#1类" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h5>
<ul>
<li>
<p><strong>类的数据结构</strong>：（1）在C++中把一组<strong>数据</strong>   和</p>
<p>​							 （2）有权调用这些数据的<strong>函数</strong></p>
<p><strong>一个类</strong> 中 包含两种成员 ：</p>
<ul>
<li>数据 (如 变量num，score)</li>
<li>函数 (如   setdata函数  和  display函数)</li>
</ul>
<blockquote>
<p>数据成员 num 、score 和成员函数 setdata、display组成了一一个名为Student的  <strong>类</strong>   类型</p>
<p>也就是说 一个类 是由   一批数据   以及    对其操作的函数   组成的</p>
</blockquote>
</li>
<li>
<p>类 实现 数据  的 <strong>封装性</strong></p>
<p>在上面的程序中,在声明Student类时,把类中的数据和函数分为两大类:             private(私有的)和public(公用的)</p>
<p>把全部数据(num，score)指定为私有的</p>
<p>把全部函数(setdata，display)指定为公用的</p>
<ul>
<li><strong>多数情况下，都把所有数据指定为私有,以实现信息隐蔽</strong></li>
<li>数据和函数指定为私有,把另一部分数据和函数指定为公用</li>
</ul>
</li>
<li>
<p>类 实现 数据  的 <strong>信息隐蔽</strong></p>
<ol>
<li>凡是被指定为<strong>公用的数据或函数</strong>：既可以被本类中的成员函数调用,也可以被类外语句所调用</li>
<li>被指定为<strong>私有的成员</strong>(函数或数据)：只能被本类中的成员函数所调用,而不 能被类以外的语句调用(除了以后介绍的“友元类”成员以外)。</li>
</ol>
<blockquote>
<p>这样做的目的是对某些 数据进行保护，只有被指定的本类中的成员函数才能调用它们,拒绝其他无关的部分调用它们,以防止误调用。这样才能真正实现封装的目的(把有关的数据与操作组成一个单位,与外界相对隔离)</p>
</blockquote>
<p><strong>信息隐蔽是C++的一大特点</strong></p>
</li>
<li>
<p>int 等是系统已预先定义好的 标准数据类型  而</p>
<p>Student使用户自己声明（指定）的类型</p>
</li>
</ul>
<h5 id="2对象">2.对象<a href="#2对象" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h5>
<p>​			<strong>具有   “类”   类型特征的变量称为“对象”(object)</strong></p>
<p>​			                          <code>Student studl,stud2</code></p>
<ul>
<li><strong>studl</strong>    和   <strong>stud2</strong>    是Student类型的对象</li>
<li>和其他变量一样，对象是占实际存储空间的，而类型并不占实际存储空间,它只是给出一种“模型”供用户定义实际的对象。</li>
<li>在用Student定义了studl和stud2以后,这两个对象具有同样的结构和特性</li>
<li><img src="C:/Users/lichaikui/AppData/Roaming/Typora/typora-user-images/image-20220126163614810.png" alt="image-20220126163614810"></li>
</ul>
<h5 id="3调用">3.调用<a href="#3调用" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h5>
<p>调用对象的 数据 、调用对象的 成员函数</p>
<p>不能只写 函数名（如 “setdata();”），函数必须说明要调用哪一对象的函数，准备给哪一对象中的变量赋值</p>
<table>
<thead>
<tr>
<th>对象名</th>
<th>num(学号)</th>
<th>score(成绩)</th>
<th>sedada(函数)</th>
<th>disply(函数)</th>
</tr>
</thead>
<tbody>
<tr>
<td>stud1</td>
<td>stud1.num(如1001)</td>
<td>stud1.score(如98.5)</td>
<td>stud1.sedata()</td>
<td>stud1.disply()</td>
</tr>
<tr>
<td>stud2</td>
<td>stud2.num(如1002)</td>
<td>stud2.score(如99.5)</td>
<td>stud2.sedata()</td>
<td>stud2.disply()</td>
</tr>
</tbody>
</table>
<p>stud2.sedata()表示 调用对象 stud1的 sedada成员函数</p>

      </div></div>

  
  
<div class="pagination">
    <div class="pagination__title">
        <span class="pagination__title-h">Read other posts</span>
        <hr />
    </div>
    <div class="pagination__buttons">
        
        
        <span class="button next">
            <a href="https://lichaikui.gitee.io/simu/posts/%E5%9F%BA%E7%A1%80%E5%91%BD%E4%BB%A4/">
                <span class="button__text">命令</span>
                <span class="button__icon">→</span>
            </a>
        </span>
        
    </div>
</div>

  

  

</div>

  </div>

  
    <footer class="footer">
  <div class="footer__inner">
    
      <div class="copyright">
        <span>© 2022 Powered by <a href="http://gohugo.io">Hugo</a></span>
    
        <span>:: Theme made by <a href="https://twitter.com/panr">panr</a></span>
      </div>
  </div>
</footer>

<script src="https://lichaikui.gitee.io/simu/assets/main.js"></script>
<script src="https://lichaikui.gitee.io/simu/assets/prism.js"></script>







  
</div>

</body>
</html>
